package WebFinder

import (
	"gitee.com/fierce_wolf/go-web-crawler/WebCrawler"
	"regexp"
)

type Mobile struct {
	List []*WebCrawler.WebElement // 手机号码的相关元素，其中text字段被识别为手机号码
}

func (e *Mobile) GetList() []*WebCrawler.WebElement {
	return e.List
}

func (e *Mobile) Find(els []*WebCrawler.WebElement) []*WebCrawler.WebElement {
	e.List = make([]*WebCrawler.WebElement, 0)

	// 参数的准备：正则表达式
	regexp, _ := regexp.Compile(`1[3-9]\d{9}`)

	els = WebCrawler.Site.FindElements(els, WebCrawler.Filter{
		Mode:  WebCrawler.ModeRegexp,
		Param: regexp,
	})

	originals := make([]*WebCrawler.WebElement, 0)
	for _, el := range els {
		matches := regexp.FindAllString(el.Text, -1) // -1表示返回所有匹配项
		if len(matches) == 1 {
			// 原本
			originals = append(originals, el)

			// 副本
			clone := el.Clone()
			clone.Text = matches[0]
			e.List = append(e.List, clone)
		}
	}

	return originals
}

func (e *Mobile) FindTexts(text string) []string {
	regexp, _ := regexp.Compile(`1[3-9]\d{9}`)
	return regexp.FindAllString(text, -1)
}
